package com.example.javaee_mybaits.mapper;


import com.example.javaee_mybaits.entity.UserInfo;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
// Mapper是mybaits提供的一个注解，它将UserInfoMapper对象交给spring管理
// 不能使用@Repository等五大类注解代替

public interface UserInfoMapper {
    // 不能将接口改为抽象类

    // 使用@Select注解写sql语句
    @Select("select * from userinfo")
    List<UserInfo> queryUserInfo();

    // 使用#{}实现参数传递
    @Select("select * from userinfo where id = #{id} and username = #{username}")
    List<UserInfo> queryUserInfo1(Integer id, String username);

    // 获取到新插⼊数据的id赋值给对象中的id属性
    @Options(useGeneratedKeys = true, keyProperty = "id")
    @Insert("insert into userinfo (username, `password`, age, gender, phone) "
    + "values (#{username},#{password},#{age},#{gender},#{phone})")
    Integer insertUserInfo(UserInfo userInfo);

    // 企业中不建议使用物理删除（delete）、建议使用逻辑删除
    @Delete("delete from userinfo where id = #{id}")
    Integer deleteUserInfo(Integer id);

    @Update("update userinfo set username='changle' where id = #{id}")
    Integer updateUserInfo(Integer id);


    // ${}实现sql语句中的排序功能
    @Select("select * from userinfo order by id ${sort} ")
    List<UserInfo> queryAllUserBySort(String sort);

    // like模糊查询，concat是sql内部的字符串拼接函数
    @Select("select * from userinfo where username like concat('%',#{key},'%')")
    List<UserInfo> queryAllUserByLike(String key);

}
